package com.qkjia.zqkspringshell.demo;

import org.jline.utils.AttributedStyle;
import org.springframework.shell.jline.PromptProvider;
import org.springframework.shell.standard.ShellComponent;
import org.springframework.stereotype.Component;
import sun.util.logging.resources.logging;

import java.net.InetAddress;

/**
 * SpringShell自定义启动信息

 * SpringShell 应用启动时, 默认会输出Spring Shell 的启动信息. 对于一个专业的shell来讲, 输出Spring相关的启动信息,
 * 肯定是不合适的, 我们需要输出我们系统相关的信息.
 *
 * 1. SpringShell 默认启动信息
 * SpringShell 的启动信息一共包括三部分: SpringBoot banner, SpringBppt启动类日志, shell命令提示符.
 */
@ShellComponent
public class ZidingyiQidongXInxi {

/*    2. 自定义启动信息
    对于SpringShell 应用默认的三部分启动信息, 我们需要分别进行处理.

            2.1 自定义banner
    由于SpringShell 应用本身就是一个SpringBoot 应用, 因此借助于SpringBoot应用自定义Banner方案即可实现.
    修改SpringBoot应用banner 只需要在resources文件夹中添加banner.txt文件即可, 可以自定义banner内容, 样式, 颜色等, 具体文件内容格式非本博客核心内容, 故笔者不在此详述.
    笔者指定banner 内容, 字体颜色, 版本号等信息.
    文字banner生成网站:http://patorjk.com/software/taag/#p=display&f=Slant&t=MYSHELL
            ————————————————
    版权声明：本文为CSDN博主「Java 程序源」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。*/
/*
    2.2 自定义系统日志
    SpringBoot启动类日志级别为info, 我们只需要将启动类日志提升为warn即可. 直接修改application.yml 文件即可. 笔者修改为:

            # pattern 并没有实际用处, 这是笔者测试时用的.
    logging:
    pattern:
    console: "%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread]-%msg%n"
    level:
    org.zongf.learn.spring.shell.SpringShellApplication: warn*/

//    2.3 自定义命令提示符
//    SpringShell 自定义命令提示符在笔者之前的博客中已经提及了, 新增自定义命令提示符组件即可.
/*
@Component
public class CustomPromptProvider implements PromptProvider {

    @Override
    public AttributedString getPrompt() {

        // 获取主机名称
        String hostName = getHostName();

        // 设置命令提示符文字
        String promot = "spring@" + hostName + "> ";

        // 设置命令提示符字体样式
        AttributedStyle promotStyle = AttributedStyle.BOLD.foreground(AttributedStyle.GREEN);

        // 返回命令提示符
        return new AttributedString(promot, promotStyle);
    }

    */
/**
     * @Description: 获取主机名称
     * @return: String 主机名称
     * @author: zongf
     * @time: 2019-01-26 08:58:45
     *//*

    private String getHostName(){
        String hostName = "";
        try {
            InetAddress inetAddress = InetAddress.getLocalHost();
            hostName = inetAddress.getHostName();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return hostName;
    }
}
*/

}
